// 引入 request 文件
import request from './index.js'
// 引入我们创建的统一配置文件
import config from '@/config/index.js'

// 全局请求封装
const base_url = config.baseURL
// 全局请求封装
// const base_url = 'http://192.168.0.137:8085'
// 请求超出时间
// const timeout = 50000000

// 需要修改token，和根据实际修改请求头
export default (params) => {
	let url = params.url;
	let method = params.method || "get";
	let data = params.data || {};
	let header = {
		'Content-Type': 'application/json;charset=UTF-8',
		'Authorization': uni.getStorageSync('token'),
		...params.header
	}
	return new Promise((resolve, reject) => {
		uni.request({
			url: base_url + url,
			method: method,
			header: header,
			data: data,
			// timeout,
			success(response) {
				const res = response
				// console.log("response===========",response);
				// 根据返回的状态码做出对应的操作
				//获取成功 
				if (res.statusCode == 200) {
					if (res.data.code == 200) {
						resolve(res);
						return
					}

					switch (res.data.code) {
						case 401:
							uni.showToast({
								title: '登录已过期，请重新登录',
								icon: 'none',
								duration: 2000,
								complete: () => {
									setTimeout(() => {
										uni.navigateTo({
											url: "/pages_sub/login/login",
										});
									}, 1500);
								}
							});
							break;
						case 404:
							uni.showToast({
								title: '请求的资源不存在',
								icon: "none",
								duration: 2000,
							});
							break;
						default:
							uni.showToast({
								title: res.data.msg || '操作失败，请稍后再试',
								icon: 'none',
								duration: 2000,
							});
							break;
					}
					// 关键：将包含错误信息的响应 reject 出去
					resolve(res);
				} else {
					// 处理 HTTP 状态码非 200 的情况
					uni.showToast({
						title: `网络错误: ${res.statusCode}`,
						icon: "error",
						duration: 2000
					});
					reject(res); // 将错误响应 reject
				}
			},
			fail(err) {
				console.log(err)
				if (err.errMsg && err.errMsg.indexOf('request:fail') !== -1) {
					uni.showToast({
						title: '网络异常',
						icon: "error",
						duration: 2000
					})
				} else {
					uni.showToast({
						title: '请求发生未知错误',
						icon: "none",
						duration: 2000
					})
				}
				reject(err);

			},
			complete() {
				// 不管成功还是失败都会执行
				uni.hideLoading();
				uni.hideToast();
			}
		});
	})
};